Media Plant – YANG Sample Report

A compact, realistic example showing a YANG module and matching instance data.

Module

YANG Schema

Defines device facts, PTP status, QoS classes, and multicast joins.

Instances

Sample Data

YANG-JSON instance, NETCONF XML reply, and a RESTCONF example.

YANG Module media-plant@2025-10-17.yang

Copied!
module media-plant {
  yang-version 1.1;
  namespace "urn:example:media-plant";
  prefix mp;

  organization "Example";
  contact "ops@example.com";
  description
    "Tiny model for demo: device facts, PTP, QoS, multicast.";

  revision "2025-10-17" {
    description "Initial.";
  }

  typedef dscp {
    type uint8 {
      range "0..63";
    }
    description "DSCP value 0..63";
  }

  container device {
    description "Basic device data";
    leaf hostname { type string; }
    leaf os-version { type string; }
    leaf model { type string; }
    leaf uptime-seconds { type uint32; }
  }

  container ptp {
    description "PTP status per ST 2059 profile (summary)";
    leaf domain { type uint8; }
    leaf state  { type enumeration {
      enum master; enum slave; enum passive; enum disabled;
    }}
    leaf grandmaster-id { type string; description "ClockIdentity"; }
    leaf steps-removed  { type uint8; }
    leaf offset-from-master-ns { type int64; description "nanoseconds"; }
    leaf mean-path-delay-ns    { type int64; description "nanoseconds"; }
  }

  container qos {
    description "Simple DSCP-to-queue view";
    list class {
      key "name";
      leaf name { type string; }
      leaf dscp { type dscp; }
      leaf queue { type uint8; description "Hardware queue index"; }
      leaf strict-priority { type boolean; default "false"; }
    }
  }

  container multicast {
    description "Multicast control-plane/receiver view";
    list igmp-interface {
      key "name";
      leaf name { type string; }
      leaf version { type uint8; description "IGMP version (2/3)"; }
      list join {
        key "group";
        leaf group { type string; description "IPv4 G (e.g., 232.1.2.3)"; }
        leaf source { type string; description "S for (S,G), empty for ASM"; }
        leaf rx-rate-mbps { type decimal64 { fraction-digits 2; } }
      }
    }
  }
}

Instance Data YANG-JSON (RFC 7951)

Copied!
{
  "media-plant:device": {
    "hostname": "leaf-11",
    "os-version": "EOS-4.31.2F",
    "model": "DCS-7050X3",
    "uptime-seconds": 86425
  },
  "media-plant:ptp": {
    "domain": 127,
    "state": "slave",
    "grandmaster-id": "84:2f:12:ff:fe:aa:bb:cc",
    "steps-removed": 1,
    "offset-from-master-ns": 85,
    "mean-path-delay-ns": 120
  },
  "media-plant:qos": {
    "class": [
      { "name": "ptp",     "dscp": 48, "queue": 7, "strict-priority": true  },
      { "name": "video",   "dscp": 40, "queue": 5, "strict-priority": false },
      { "name": "audio",   "dscp": 34, "queue": 4, "strict-priority": false },
      { "name": "control", "dscp": 24, "queue": 3, "strict-priority": false },
      { "name": "best",    "dscp": 0,  "queue": 0, "strict-priority": false }
    ]
  },
  "media-plant:multicast": {
    "igmp-interface": [
      {
        "name": "Vlan2110-red",
        "version": 3,
        "join": [
          { "group": "232.1.2.10", "source": "10.110.0.10", "rx-rate-mbps": 2830.50 },
          { "group": "232.1.2.11", "source": "10.110.0.11", "rx-rate-mbps": 125.00  }
        ]
      },
      {
        "name": "Vlan2110-blue",
        "version": 3,
        "join": [
          { "group": "232.1.2.10", "source": "10.120.0.10", "rx-rate-mbps": 2830.45 }
        ]
      }
    ]
  }
}

NETCONF Reply XML

Copied!
<rpc-reply message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <data>
    <device xmlns="urn:example:media-plant">
      <hostname>leaf-11</hostname>
      <os-version>EOS-4.31.2F</os-version>
      <model>DCS-7050X3</model>
      <uptime-seconds>86425</uptime-seconds>
    </device>
    <ptp xmlns="urn:example:media-plant">
      <domain>127</domain>
      <state>slave</state>
      <grandmaster-id>84:2f:12:ff:fe:aa:bb:cc</grandmaster-id>
      <steps-removed>1</steps-removed>
      <offset-from-master-ns>85</offset-from-master-ns>
      <mean-path-delay-ns>120</mean-path-delay-ns>
    </ptp>
    <qos xmlns="urn:example:media-plant">
      <class>
        <name>ptp</name><dscp>48</dscp><queue>7</queue><strict-priority>true</strict-priority>
      </class>
      <class>
        <name>video</name><dscp>40</dscp><queue>5</queue><strict-priority>false</strict-priority>
      </class>
    </qos>
    <multicast xmlns="urn:example:media-plant">
      <igmp-interface>
        <name>Vlan2110-red</name><version>3</version>
        <join><group>232.1.2.10</group><source>10.110.0.10</source><rx-rate-mbps>2830.50</rx-rate-mbps></join>
      </igmp-interface>
    </multicast>
  </data>
</rpc-reply>

RESTCONF Example HTTP

Copied!
GET https://switch/restconf/data/media-plant:ptp
Accept: application/yang-data+json

Tip: Save this page and host it locally for your study materials. You can extend the YANG module with interfaces, per-port PTP, or 2110 flow stats.